package com.bifang.core.dict.integration;

import com.github.pagehelper.PageInfo;
import com.bifang.common.vo.*;
import com.bifang.common.vo.dict.SearchQueryVO;
import com.bifang.common.vo.dict.SelectQueryVO;
import com.bifang.common.vo.dict.SelectResultVO;
import java.util.List;
import java.util.Map;

/** 数据字典服务 */
public interface DictIntegration {
    /** 根据字段和key获取值 */
    String getValue(String dictField, String dictKey);
    /** 根据字段和value获取key */
    String getKey(String dictField, String dictValue);
    /** 根据字段获取字典值 */
    List<SelectVO> getDict(SelectVO selectVO);
    /**
     * 根据字段获取字典值
     *
     * @param dictField 字段
     */
    List<SelectVO> getDictByDictField(String dictField);
    /**
     * 根据字段获取批量字典值
     *
     * @param dictFields 批量字段，用英文逗号隔开
     */
    Map<String, List<SelectVO>> getDictBatch(String dictFields);
    /**
     * 根据条件获取数据字典列表
     *
     * @param dictVO
     */
    PageInfo<DictVO> getDictList(DictVO dictVO);

    List<DictVO> getDictListByDictField(String dictField);
    /** 根据Id 获取详情 */
    DictVO getDictDetail(DictVO dictVO);
    /** 根据字段和key获取字典数据 */
    DictVO getDictByFieldAndKey(String dictField, String dictKey);
    /** 获取字段数据字典 */
    DictFieldRetVO getDictField(DictVO dictVO);
    /** 新增 */
    DictVO add(DictVO dictVO);
    /** 修改 */
    DictVO edit(DictVO dictVO);
    /** 删除 */
    void delete(DictDeleteVO dictVO);
    /** 删除 批量 */
    void deleteBatch(DictDeleteVO dictVO);

    void clearCache(DictVO dictVO);

    /** 根据orgId获取名称 */
    String getOrgNameById(String orgId);
    /** 根据orgCode获取名称 */
    String getOrgNameByCode(String orgCode);
    /** 根据orgCode获取Id */
    String getOrgIdByCode(String orgCode);
    /** 根据orgId获取code */
    String getOrgCodeById(String orgId);

    /** 通字段下拉通用树 */
    List<AntTreeVO> getDictCommonTree(String dictField);

    /** 获取全国行政区划下拉树 */
    List<AntTreeVO> getAreaSelectTree(List<String> inData, List<String> notInData);

    /** 图标下拉树 */
    List<AntTreeVO> getIconSelectTree(BaseVO baseVO);
    /** 获取用户基本信息 */
    UserVO getUserDetail(String userId);

    /** 根据用户id获取姓名 */
    String getFullNameByUserId(String userId);

    /** 获取角色基本信息 */
    RoleVO getRoleDetail(String roleId);
    /** 根据角色id获取角色名称 */
    String getRoleNameById(String roleId);

    /**
     * 根据过滤条件获取下拉字典
     *
     * @param selectVO
     * @param dictKeys
     * @return
     */
    List<SelectVO> getDictCondition(SelectVO selectVO, String dictKeys);

    List<SelectResultVO> getSelectData(SelectQueryVO vo);

    PageInfo<?> getCommonData(SearchQueryVO vo);
    /** 查询同类的所有用户类型 */
    List<String> getUserTypeList(String userType);

    /** 根据过滤条件获取下拉字典树 */
    List<AntTreeVO> getDictConditionTree(SelectVO selectVO);
}
